package join.model.beans;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.springframework.format.annotation.DateTimeFormat;

import join.util.AppListUtil;
import join.util.FormatterUtil;
import join.util.RepositoryUtil;

@Entity
@Table(name="proyecto_informe", schema=RepositoryUtil.ESQUEMA_NOMBRE)
public class ProyectoInforme {
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name ="id", nullable=false)
	private Long id;
	@Column(name ="proyecto", nullable=false)
	private Long proyecto;
	@Column(name ="tipo", nullable=false)
	private String tipo;
	@Column(name ="nombre", nullable=false)
	private String nombre;
	@Column(name ="periodo_unidad", nullable=true)
	private String periodoUnidad;
	@Column(name ="periodo", nullable=true)
	private Long periodo;
	@Column(name ="fecha_inicial", nullable=true)
	@DateTimeFormat(pattern = FormatterUtil.DATE_FORMAT)
	private Date fechaInicial;
	@Column(name ="fecha_final", nullable=true)
	@DateTimeFormat(pattern = FormatterUtil.DATE_FORMAT)
	private Date fechaFinal;
	@Column(name ="requiere_autorizacion", nullable=false)
	private String requiereAutorizacion;
	@Column(name ="enviar_a", nullable=true)
	private String enviarA;
	@Column(name ="plantilla", nullable=true)
	private Long plantilla;
	@Column(name ="estado", nullable=false)
	private String estado;
	/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}
	/**
	 * @param id the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}
	/**
	 * @return the proyecto
	 */
	public Long getProyecto() {
		return proyecto;
	}
	/**
	 * @param proyecto the proyecto to set
	 */
	public void setProyecto(Long proyecto) {
		this.proyecto = proyecto;
	}
	/**
	 * @return the tipo
	 */
	public String getTipo() {
		return tipo;
	}
	/**
	 * @param tipo the tipo to set
	 */
	public void setTipo(String tipo) {
		this.tipo = tipo;
	}
	/**
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}
	/**
	 * @param nombre the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	/**
	 * @return the periodoUnidad
	 */
	public String getPeriodoUnidad() {
		return periodoUnidad;
	}
	/**
	 * @param periodoUnidad the periodoUnidad to set
	 */
	public void setPeriodoUnidad(String periodoUnidad) {
		this.periodoUnidad = periodoUnidad;
	}
	/**
	 * @return the periodo
	 */
	public Long getPeriodo() {
		return periodo;
	}
	/**
	 * @param periodo the periodo to set
	 */
	public void setPeriodo(Long periodo) {
		this.periodo = periodo;
	}
	/**
	 * @return the fechaInicial
	 */
	public Date getFechaInicial() {
		return fechaInicial;
	}
	/**
	 * @param fechaInicial the fechaInicial to set
	 */
	public void setFechaInicial(Date fechaInicial) {
		this.fechaInicial = fechaInicial;
	}
	/**
	 * @return the fechaFinal
	 */
	public Date getFechaFinal() {
		return fechaFinal;
	}
	/**
	 * @param fechaFinal the fechaFinal to set
	 */
	public void setFechaFinal(Date fechaFinal) {
		this.fechaFinal = fechaFinal;
	}
	/**
	 * @return the requiereAutorizacion
	 */
	public String getRequiereAutorizacion() {
		return requiereAutorizacion;
	}
	/**
	 * @param requiereAutorizacion the requiereAutorizacion to set
	 */
	public void setRequiereAutorizacion(String requiereAutorizacion) {
		this.requiereAutorizacion = requiereAutorizacion;
	}
	/**
	 * @return the enviarA
	 */
	public String getEnviarA() {
		return enviarA;
	}
	/**
	 * @param enviarA the enviarA to set
	 */
	public void setEnviarA(String enviarA) {
		this.enviarA = enviarA;
	}
	/**
	 * @return the estado
	 */
	public String getEstado() {
		return estado;
	}
	/**
	 * @param estado the estado to set
	 */
	public void setEstado(String estado) {
		this.estado = estado;
	}

	/**
	 * @return the plantilla
	 */
	public Long getPlantilla() {
		return plantilla;
	}
	/**
	 * @param plantilla the plantilla to set
	 */
	public void setPlantilla(Long plantilla) {
		this.plantilla = plantilla;
	}
	/**
	 * Nombre para la tipo
	 * @return
	 */
	public String getTipoNombre (){
		return AppListUtil.listaProcesoTexto("proyectoInformeTipo", getTipo());
	}
	
	/**
	 * Nombre para el estado
	 * @return
	 */
	public String getEstadoNombre (){
		return AppListUtil.listaProcesoTexto("proyectoInformeEstado", getEstado());
	}
	
	/**
	 * Nombre para el estado
	 * @return
	 */
	public String getPeriodoUnidadNombre (){
		return AppListUtil.listaProcesoTexto("periodoUnidad", getPeriodoUnidad());
	}
}